题目大意就是,有多组询问,每组询问包含两个整数 $x,y$ ,求出 $x$ 到 $y$ 的一条路径,满足这条路径在所有的 $x$ 到 $y$ 的路径中,边权最小的边权值最大。
这个很显然我们可以先求出图的最大生成树,那么 $x$ 到 $y$ 的目标路径肯定在最大生成树上,也只能在最大生成树上。
那么我们需要在最大生成树上找到这条路径,最大生成树是一棵树,很显然的我们可以想到在这棵树上做 $Lca$ ,那么这样就超级简单了。
我们在求 $lca$ 的时候顺带维护一下 $sum$ 数组,$sum[x][i]$ 表示在最大生成树 $x$ 到 $fa[x][i]$ 这条路径上的所有边的边权最小值。转移的方法也很简单:$sum[x][i]=min(sum[x][i-1],sum[fa[x][i-1]][i-1])$ 。
对于不能到达的情况特判一下就好了。
于是这题就做完了。
Code:
1 |
|
本文标题:【题解】 货车运输 最大生成树+倍增Lca luoguP1967
文章作者:Qiuly
发布时间:2019年03月13日 - 00:00
最后更新:2019年03月29日 - 13:53
原始链接:http://qiulyblog.github.io/2019/03/13/[题解]luoguP1967/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。